/**
 * Description:
 * Class Name:WatchServiceTest
 * Date:2022/5/4 17:14
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第15章_输入输出._15_10_NIO2的功能和用法._15_10_3_使用WatchService监控文件变化;

import java.nio.file.*;

public class WatchServiceTest {
    public static void main(String[] args) throws Exception{
        // 获取文件系统的WatchService对象
        WatchService watchService = FileSystems.getDefault().newWatchService();

        // 为C盘根路径注册监听
        Paths.get("C:/").register(watchService,
                StandardWatchEventKinds.ENTRY_CREATE,
                StandardWatchEventKinds.ENTRY_MODIFY,
                StandardWatchEventKinds.ENTRY_DELETE
                );
        while (true){
            // 获取下个文件变化事件
            WatchKey key = watchService.take();             // ①
            for (WatchEvent<?> event:
                 key.pollEvents()) {
                System.out.println(event.context() + "文件发生了 " + event.kind() + " 事件！");
            }

            // 重设WatchKey
            boolean valid = key.reset();
            // 如果重设失败则退出监听
            if (!valid) break;
        }
    }
}
